/**
 * @封装require基本方式
 * @新建立untils文件夹
 * @建立requset.js
 */
import axios from "axios";
import { ElMessage, ElMessageBox } from "element-plus";
// 创建axios实例
// console.log(import.meta.env.VITE_APP_BASE_URL)
const service = axios.create({
  baseURL: "/api", // api的base_url
  timeout: 5000, // 请求超时时间,
  withCredentials: true, //跨域请求时发送cookie
});
// request拦截器
//请求拦截器=>所有的axios请求都会被拦截器拦截
//请求头 或者请求参数
service.interceptors.request.use(
  (config) => {
    // console.log("请求拦截器",config)
    return config;
  },
  (error) => {
    // Do something with request error
    console.log(error); // for debug
    Promise.reject(error);
  }
);

//响应拦截器=>拦截axios所有返回值
//所有响应回来的数据都要通过这个

//全局响应拦截器将结果过滤
service.interceptors.response.use(
  (config) => {
    //config是所有请求返回的结果
    //必须经过这门
    if (config.data.state) {
      return config;
    } else {
      //不需要弹窗提示
      let excludePaths = ["/sms/send"];
      //一般可以根据后台返回的错误提示码通过弹框提示给用户看
      //定义变量  
      if (!excludePaths.includes(config.config.url)) {
        ElMessageBox.alert(`${config.data.msg}`, "错误提示", {
          confirmButtonText: "知道了",
          type: "error",
          // callback: () => {
          //   ElMessage({
          //     type: "error",
          //     message: config.data.msg,
          //   });
          // },
        });
      }
      return Promise.reject(config.data.msg);
    }
  },
  (error) => {
    // Do something with request error
    //   console.log(error); // for debug
    Promise.reject(error);
  }
);

export default service;
